package exam.service;

import exam.bean.UserInfo;
import exam.common.dto.SysMenuDto;

import java.util.List;

public interface IGroupAndMenuInfoService {
    /**
     * 根据用户信息获取所有相关权限信息
     * @param userInfo
     * @return
     */
    String getPermissionMenu(UserInfo userInfo);

    /**
     * 根据用户名删除内存缓存
     * @param username  用户名
     */
    void clearUserAuthorityInfo(String username);

    /**
     * 根据用户组id删除内存缓存
     * @param groupId  用户组id
     */
    void clearUserAuthorityInfoByGroupId(Integer groupId);

    /**
     * 根据权限组id清空对应内存缓存
     * @param permissionGroupId  权限组id
     */
    void clearUserAuthorityInfoByMenuId(Integer permissionGroupId);

    /**
     * 获取当前用户可以展示的导航栏
     * @return  导航栏数据（与前端保持一致）
     */
    List<SysMenuDto> getMenuList();


    /**
     * 根据用户组id获取其所关联的权限（菜单）id
     * @param groupId   用户id
     */
    List<Integer> getMenuIdByGroupId(Integer groupId);

    /**
     * 获取权限菜单
     */
    List<SysMenuDto> allPermissionMenuInfo();


    void clearCurrentUserAuthorityInfo();
}
